﻿#ifndef __THREADMANAGER_H__
#define __THREADMANAGER_H__

#include "Singleton.h"
#include "IThreadManager.h"

namespace sky
{
    class Thread;

    class SKY_EXPORT ThreadManager : public IThreadManager, public Singleton<ThreadManager>
    {
    public:
        ThreadManager(void);
        virtual ~ThreadManager(void);

        // 加入线程
        void addThread(Thread * pThread);

        // 移除线程
        void removeThread(Thread * pThread);

        // 通知所有线程停止
        virtual void stopAll();

        // 所有线程是否已经停止
        virtual bool allThreadIsClose();

    private:
        typedef std::list<Thread*> THREAD_LIST;
        THREAD_LIST m_listThread;
    };
    
} // namespace sky

    
#endif